Providing guidance regarding content viewed via augmented reality devices

ABSTRACT

Methods, systems, and storage media for providing feedback regarding augmented reality device content are disclosed. Exemplary implementations may: detect, via a sensor of an augmented reality device having an outwardly facing camera, that a user of the augmented reality device appears within content presented in a view area thereof; responsive to detecting that the user of the augmented reality device appears within the content presented in the view area of the augmented reality device, determine an action being performed by the user; and responsive to determining the action being performed by the user, supplement the content presented in the view area of the augmented reality device.

TECHNICAL FIELD

The present disclosure generally relates to content viewed via augmentedreality devices. More particularly, the present disclosure relates toproviding guidance, feedback and/or information as a supplement tocontent viewed via augmented reality devices.

BACKGROUND

Augmented and/or virtual reality devices are becoming increasinglycommonplace in modern society. As the use of such devices becomes moremainstream, increased opportunities for using augmented and/or virtualcontent to aid users of such devices with tasks and activities arepresented.

BRIEF SUMMARY

The subject disclosure provides for systems and methods for providingguidance and/or feedback as a supplement to content viewed via augmentedreality (“AR”) devices. In some embodiments, it may be detected, via atleast one sensor of an AR device having at least one outwardly facingcamera coupled therewith, that an individual using the AR device appearswithin content presented in a view area of the AR device. In someaspects, the individual using the AR device may appear within thecontent presented in the view area thereof because the individual ispositioned in front of a reflective surface (e.g., a mirror) and is thusable to view themselves in the content presented in the view area of theAR device. Responsive to detecting that the user of the AR deviceappears within the content presented in the view area thereof, an actionbeing performed by the user may be determined. By way of non-limitingexample, it may be determined that the user is brushing their teeth. Byway of non-limiting example, it may be determined that the user isplaying a guitar. Responsive to determining the action being performedby the user, the content presented in the view area of the AR device maybe supplemented, e.g., with guidance and/or feedback regarding theaction being performed. By way of non-limiting example, responsive todetermining that the user is brushing their teeth, the content withinthe view area of the AR device may be supplemented with a reminder(e.g., a textual, audio, and/or video reminder) for the user to scheduletheir next dental appointment. By way of non-limiting example,responsive to determining that the user is playing the guitar, thecontent in the view area of the AR device may be supplemented with sheetmusic for the piece being played or instruction for enhancing orimproving the user's guitar play.

One aspect of the present disclosure relates to a method for providingfeedback regarding augmented reality device content. The method maydetecting, via a sensor of an augmented reality device having anoutwardly facing camera, that a user of the augmented reality deviceappears within content presented in a view area of the augmented realitydevice. Responsive to detecting that the user of the augmented realitydevice appears within the content presented in the view area of theaugmented reality device, the method may include determining an actionbeing performed by the user. Responsive to determining the action beingperformed by the user, the method may include supplementing the contentpresented in the view area of the augmented reality device.

Yet another aspect of the present disclosure relates to a non-transientcomputer-readable storage medium having instructions embodied thereon,the instructions being executable by one or more processors to perform amethod for providing feedback regarding augmented reality devicecontent. The method may include detecting, via a sensor of a wearable,head-mounted augmented reality device having an outwardly facing camera,that a user of the wearable, head-mounted augmented reality deviceappears within content presented in a view area of the wearable,head-mounted augmented reality device. Responsive to detecting that theuser of the wearable, head-mounted augmented reality device appearswithin the content presented in the view area of the wearable,head-mounted augmented reality device, the method may includedetermining an action being performed by the user. Responsive todetermining the action being performed by the user, the method mayinclude supplementing the content presented in the view area of thewearable, head-mounted augmented reality device.

Still another aspect of the present disclosure relates to a systemconfigured for providing feedback regarding augmented reality devicecontent. The system may include means for detecting, via a sensor of anaugmented reality device having an outwardly facing camera, that a userof the augmented reality device appears within content presented in aview area of the augmented reality device. The system may include,responsive to detecting that the user of the augmented reality deviceappears within the content presented in the view area of the augmentedreality device, means for determining an action being performed by theuser. Responsive to determining the action being performed by the user,the system may include means for supplementing the content presented inthe view area of the augmented reality device.

In some embodiments, it may be detected, via at least one sensor of theAR device having at least one outwardly facing camera, that the user ofthe AR device is present at a landmark and/or other structure/locationof general interest. An indication that a visual image including thelandmark and/or other structure/location of general interest is to becaptured via the outwardly facing camera of the AR device may bereceived. Based, at least in part, on detecting that the user of the ARdevice is present at a landmark and/or other structure/location ofgeneral interest and receiving the indication that a visual image is tobe captured, at least one best practice for capturing the visual imagesuch that the visual image includes the landmark may be determined. Insome aspects, the at least one best practice may be determined basedupon an image history associated with the user of the AR device. In someaspects, the at least one best practice may be determined based uponimages of the landmark captured by a plurality of augmented realitydevice users. The at least one best practice for capturing the visualimage such that the visual image includes the landmark may be caused tobe communicated to the user, e.g., by way of textual, audio, and/orvideo instruction that supplements the content presented in the viewarea of the AR device.

One aspect of the present disclosure relates to a system configured forproviding suggestions for capturing visual images of landmarks viaaugmented reality devices. The system may include one or more hardwareprocessors configured by machine-readable instructions. The processor(s)may be configured to detect, via a sensor of an augmented reality devicehaving an outwardly facing camera, that a user of the augmented realitydevice is present at a landmark. The processor(s) may be configured toreceive an indication that a visual image is to be captured via theoutwardly facing camera of the augmented reality device. Based, at leastin part, on detecting that the user of the augmented reality device ispresent at a landmark and receiving the indication that the visual imageis to be captured, the processor(s) may be configured to determine atleast one best practice for capturing the visual image such that thevisual image includes the landmark. The processor(s) may be configuredto cause the at least one best practice for capturing the visual imagesuch that the visual image includes the landmark to be communicated tothe user.

Another aspect of the present disclosure relates to a system configuredfor providing suggestions for capturing visual images of landmarks viaaugmented reality devices. The system may include means for detecting,via a sensor of an augmented reality device having an outwardly facingcamera, that a user of the augmented reality device is present at alandmark. The system may include means for receiving an indication thata visual image is to be captured via the outwardly facing camera of theaugmented reality device. Based, at least in part, on detecting that theuser of the augmented reality device is present at a landmark andreceiving the indication that the visual image is to be captured, thesystem may include means for determining at least one best practice forcapturing the visual image such that the visual image includes thelandmark. The system may include means for causing the at least one bestpractice for capturing the visual image such that the visual imageincludes the landmark to be communicated to the user.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

To easily identify the discussion of any particular element or act, themost significant digit or digits in a reference number refer to thefigure number in which that element is first introduced.

FIG. 1 is a schematic diagram illustrating an individual wearing ahead-mounted AR/VR device and standing in front of a reflective surface,according to certain aspects of the present disclosure.

FIG. 2 is a schematic diagram illustrating an individual wearing ahead-mounted AR/VR device and gazing in the direction of a landmark orother structure/location of interest, according to certain aspects ofthe present disclosure.

FIG. 3 is a schematic diagram illustrating a system configured forproviding feedback regarding AR/VR device content and for capturingvisual images of landmarks via AR/VR devices, in accordance with one ormore implementations.

FIG. 4 illustrates an exemplary flow diagram for providing feedbackregarding AR/VR device content, according to certain aspects of thedisclosure.

FIG. 5 illustrates an exemplary flow diagram for capturing visual imagesof landmarks or other structures/locations of interest via AR/VRdevices, in accordance with one or more implementations.

FIG. 6 is a block diagram illustrating an exemplary computer system(e.g., representing both client and server) with which aspects of thesubject technology can be implemented.

FIG. 7 illustrates an exemplary network environment of a socialnetworking system, in accordance with one or more implementations of thepresent disclosure.

FIG. 8 illustrates an exemplary social graph for a social networkingsystem, in accordance with one or more implementations of the presentdisclosure.

In one or more implementations, not all of the depicted components ineach figure may be required, and one or more implementations may includeadditional components not shown in a figure. Variations in thearrangement and type of the components may be made without departingfrom the scope of the subject disclosure. Additional components,different components, or fewer components may be utilized within thescope of the subject disclosure.

DETAILED DESCRIPTION

In the following detailed description, numerous specific details are setforth to provide a full understanding of the present disclosure. It willbe apparent, however, to one ordinarily skilled in the art that theembodiments of the present disclosure may be practiced without some ofthese specific details. In other instances, well-known structures andtechniques have not been shown in detail so as not to obscure thedisclosure.

Augmented and/or virtual reality (AR/VR) devices are becomingincreasingly commonplace in modern society. As the use of such AR/VRdevices becomes more mainstream, increased opportunities for usingaugmented and/or virtual content to aid users of such AR/VR devices withtasks and activities are presented. (It will be understood andappreciated by those having ordinary skill in the art that any use ofthe terms “augmented reality,” “virtual reality,” “augmented and/orvirtual reality,” or the like in the present disclosure is intended toencompass both virtual and augmented reality.)

The subject disclosure provides for systems and methods for providingguidance, feedback, and/or information as a supplement to content viewedvia augmented reality (“AR”) devices. In some embodiments, it may bedetected, via at least one sensor of an AR device having at least oneoutwardly facing camera coupled therewith, that an individual using theAR device appears within content presented in a view area of the ARdevice. In some aspects, the individual using the AR device may appearwithin the content presented in the view area thereof because theindividual is positioned in front of a reflective surface (e.g., amirror) and is thus able to view themselves in the content presented inthe view area of the AR device. The schematic diagram 100 of FIG. 1illustrates an individual wearing a head-mounted AR device 110 having anoutwardly facing camera/sensor 112 and standing in front of a reflectivesurface 114, according to certain aspects of the present disclosure. Asthe user shown in FIG. 1 is looking in the direction of the reflectivesurface 114, the user may appear within the content presented in theview area of the AR device 110.

Responsive to detecting that the user of the AR device appears withinthe content presented in the view area thereof, an action beingperformed by the user may be determined. By way of non-limiting example,it may be determined that the user is brushing their teeth. By way ofnon-limiting example, it may be determined that the user is playing aguitar. Responsive to determining the action being performed by theuser, the content presented in the view area of the AR device may besupplemented, e.g., with guidance, feedback and/or information regardingthe action being performed. By way of non-limiting example, responsiveto determining that the user is brushing their teeth, the content withinthe view area of the AR device may be supplemented with a reminder(e.g., a textual, audio, and/or video reminder) for the user to scheduletheir next dental appointment. By way of non-limiting example,responsive to determining that the user is playing the guitar, thecontent in the view area of the AR device may be supplemented with sheetmusic for the piece being played or instruction for enhancing orimproving the user's guitar play.

In some embodiments, it may be detected, via at least one sensor of theAR device having at least one outwardly facing camera, that the user ofthe AR device is present at a landmark and/or other structure/locationof general interest. (It will be understood and appreciated by thosehaving ordinary skill in the relevant art that use of the term“landmark” herein is intended to include any structure or locationformally designated as a landmark, as well as any structure or locationnoted to be of interest by the user of the AR device or by a pluralityof individuals that have visited the landmark/structure/location inquestion.) In non-limiting aspects, it may be detected that a user ispresent at the landmark responsive to detecting that a landmark appearswithin a view area of the AR device. The schematic diagram 200 of FIG. 2illustrates an individual wearing a head-mounted AR device 210 having anoutwardly facing camera/sensor 212 and gazing in the direction of alandmark 214, according to certain aspects of the present disclosure. Asthe user is gazing in the direction of the landmark 214, the landmark214 may appear within content presented in the view area of the ARdevice 210.

An indication that a visual image including the landmark is to becaptured via the outwardly facing camera of the AR device may bereceived. In non-limiting aspects, such indication may be received viaverbal command by the user that is detected via a sensor coupled withthe AR device. Based, at least in part, on detecting that the user ofthe AR device is present at a landmark and receiving the indication thata visual image is to be captured, at least one best practice forcapturing the visual image such that the visual image includes thelandmark may be determined. In some aspects, the at least one bestpractice may be determined based upon an image history associated withthe user of the AR device. In some aspects, the at least one bestpractice may be determined based upon images of the landmark captured bya plurality of augmented reality device users. The at least one bestpractice for capturing the visual image such that the visual imageincludes the landmark may be caused to be communicated to the user,e.g., by way of textual, audio, and/or video instruction thatsupplements the content presented in the view area of the AR device.

FIG. 3 illustrates a system 300 configured for a system configured forproviding feedback regarding AR/VR device content and for capturingvisual images of landmarks via AR/VR devices, according to certainaspects of the disclosure. In some implementations, system 300 mayinclude one or more computing platforms 310. Computing platform(s) 310may be configured to communicate with one or more remote platforms 312according to a client/server architecture, a peer-to-peer architecture,and/or other architectures. Remote platform(s) 312 may be configured tocommunicate with other remote platforms via computing platform(s) 310and/or according to a client/server architecture, a peer-to-peerarchitecture, and/or other architectures. Users may access system 300via remote platform(s) 312.

Computing platform(s) 310 may be configured by machine-readableinstructions 314. Machine-readable instructions 314 may include one ormore instruction modules. The instruction modules may include computerprogram modules. The instruction modules may include one or more of userdetecting module 316, action determining module 318, contentsupplementing module 320, action fact determining module 322,communicating module 324, landmark detecting module 326, image captureindication receiving module 328, best practice determining module 330,and/or other instruction modules.

User detecting module 316 may be configured to detect that a user of anAR device appears within the content presented in a view area thereof.In aspects, user detecting module 316 may be configured to detect that auser of an AR device appears within content presented in a view areathereof via an outwardly facing camera/sensor of the AR device (e.g.,the outwardly facing camera/sensor 112 of the AR device 110 of FIG. 1 ).

Responsive to detecting (e.g., via the user detecting module 316) that auser of an AR device appears within the content presented in the viewarea thereof, action determining module 318 may be configured todetermine an action being performed by the user. In aspects, actiondetermining module 318 may be configured to determine an action beingperformed by the user via detection of the action using an outwardlyfacing camera/sensor of the AR device (e.g., the outwardly facingcamera/sensor 112 of the AR device 110 of FIG. 1 ) and querying of adata store for details regarding the nature of the detected action.

Responsive to determining the action being performed by the user,content supplementing module 320 may be configured to supplement thecontent presented in the view area of the AR device. By way ofnon-limiting example, supplementing the content presented in the viewarea of the AR device may include supplementing the content presented inthe view area of the AR device with guidance and/or feedback for atleast one of improving and enhancing the action being performed by theuser. By way of non-limiting example, supplementing the contentpresented in the view area of the AR device may include supplementingthe content presented in the view area of the AR device with at leastone of textual content, audio content, and video content containing theguidance and/or feedback for improving and/or enhancing the action beingperformed by the user.

Action fact determining module 322 may be configured to determine, basedon at least one of information obtained from a sensor of the AR device,a data store associated with the AR device, and information derived fromat least one social networking platform, one or more facts regarding theaction being performed by the user. By way of non-limiting example, suchfacts may include information derived from the user's social networkingprofile, feed, or the like. For instance, if it is detected that theuser is playing the guitar, it may be determined from the user's socialnetworking feed that the user is learning to play a certain piece ofmusic on the guitar. In this instance, a fact regarding the action beingperformed by the user may be an identity of the piece of music.

Communicating module 324 may be configured to cause at least one ofguidance, feedback, information, and/or facts (e.g., determined byaction fact determining module 322) to be communicated to a user as asupplement to content viewed via an augmented reality device. Inaspects, communicating module 324 may be configured to cause at leastone of guidance, feedback, information, and/or facts to be communicatedto a user as supplemental text overlaid upon content presented in a viewarea of an AR device. In aspects, communicating module 324 may beconfigured to cause at least one of guidance, feedback, information,and/or facts to be communicated to a user as supplemental audio contentpresented contemporaneously with content in a view area of an AR device.In aspects, communicating module 324 may be configured to cause at leastone of guidance, feedback, information, and/or facts to be communicatedto a user as supplemental video content presented contemporaneously withcontent presented in a view area of an AR device.

Landmark detecting module 326 may be configured to detect that a user ofan AR device is present at a landmark. In non-limiting aspects, landmarkdetecting module 326 may be configured to detect that a user of an ARdevice is present at a landmark via information obtained by a sensor ofan AR reality device. In non-limiting aspects, landmark detecting module326 may be configured to detect that a user of an AR device is presentat a landmark via information obtained by a sensor of an AR realitydevice having an outwardly facing camera. In non-limiting aspects, itmay be detected that a user is present at the landmark responsive todetecting that a landmark appears within a view area of the AR device.

Image capture indication receiving module 328 may be configured toreceive an indication that a visual image is to be captured via an ARdevice. In non-limiting aspects, image capture indication receivingmodule 328 may be configured to receive an indication that a visualimage is to be captured via the outwardly facing camera of an AR device.In non-limiting aspects, an indication may be received by image captureindication receiving module 328 via verbal command by the user that isdetected via a sensor coupled with the AR device. In non-limitingaspects, an indication that a visual image is to be captured via an ARdevice may be received by image capture indication receiving module 328via a particular action or gesture being performed by a user of an ARdevice.

Based, at least in part, on detecting that a user of an AR device ispresent at a landmark and receiving an indication that a visual image isto be captured, best practice determining module 330 may be configuredto determine at least one best practice for capturing the visual imagesuch that the visual image includes the landmark. In some non-limitingaspects, the at least one best practice may be determined based upon animage history associated with the user of the AR device. In somenon-limiting aspects, the at least one best practice may be determinedbased upon images of the landmark captured by a plurality of augmentedreality device users. In some non-limiting aspects, the at least onebest practice may be determined based upon information associated with aplurality of visual images including the landmark captured by aplurality of augmented reality device users. In some non-limitingaspects, the at least one best practice for capturing the visual imagesuch that the visual image includes the landmark may include informationregarding positioning of the landmark in relation to the visual image asa whole. In some non-limiting aspects, the at least one best practicefor capturing the visual image such that the visual image includes thelandmark may include information regarding an angle from which capturingof the visual image is suggested.

In embodiments, communicating module 324 may be configured to cause atleast one best practice for capturing a visual image such that thevisual image includes a landmark to be communicated to a user as asupplement to content viewed via an augmented reality device.

In some implementations, computing platform(s) 310, remote platform(s)312, and/or external resources 332 may be operatively linked via one ormore electronic communication links. For example, such electroniccommunication links may be established, at least in part, via a networksuch as the Internet and/or other networks. It will be appreciated thatthis is not intended to be limiting, and that the scope of thisdisclosure includes implementations in which computing platform(s) 310,remote platform(s) 312, and/or external resources 332 may be operativelylinked via some other communication media.

A given remote platform 312 may include one or more processorsconfigured to execute computer program modules. The computer programmodules may be configured to enable an expert or user associated withthe given remote platform 312 to interface with system 300 and/orexternal resources 332, and/or provide other functionality attributedherein to remote platform(s) 312. By way of non-limiting example, agiven remote platform 312 and/or a given computing platform 310 mayinclude one or more of a server, a desktop computer, a laptop computer,a handheld computer, a tablet computing platform, a NetBook, aSmartphone, a gaming console, and/or other computing platforms.

External resources 332 may include sources of information outside ofsystem 300, external entities participating with system 300, and/orother resources. In some implementations, some or all of thefunctionality attributed herein to external resources 332 may beprovided by resources included in system 300.

Computing platform(s) 310 may include electronic storage 334, one ormore processors 336, and/or other components. Computing platform(s) 310may include communication lines, or ports to enable the exchange ofinformation with a network and/or other computing platforms.Illustration of computing platform(s) 310 in FIG. 3 is not intended tobe limiting. Computing platform(s) 310 may include a plurality ofhardware, software, and/or firmware components operating together toprovide the functionality attributed herein to computing platform(s)310. For example, computing platform(s) 310 may be implemented by acloud of computing platforms operating together as computing platform(s)310.

Electronic storage 334 may comprise non-transitory storage media thatelectronically stores information. The electronic storage media ofelectronic storage 334 may include one or both of system storage that isprovided integrally (i.e., substantially non-removable) with computingplatform(s) 310 and/or removable storage that is removably connectableto computing platform(s) 310 via, for example, a port (e.g., a USB port,a firewire port, etc.) or a drive (e.g., a disk drive, etc.). Electronicstorage 334 may include one or more of optically readable storage media(e.g., optical disks, etc.), magnetically readable storage media (e.g.,magnetic tape, magnetic hard drive, floppy drive, etc.), electricalcharge-based storage media (e.g., EEPROM, RAM, etc.), solid-statestorage media (e.g., flash drive, etc.), and/or other electronicallyreadable storage media. Electronic storage 334 may include one or morevirtual storage resources (e.g., cloud storage, a virtual privatenetwork, and/or other virtual storage resources). Electronic storage 334may store software algorithms, information determined by processor(s)336, information received from computing platform(s) 310, informationreceived from remote platform(s) 312, and/or other information thatenables computing platform(s) 310 to function as described herein.

Processor(s) 336 may be configured to provide information processingcapabilities in computing platform(s) 310. As such, processor(s) 336 mayinclude one or more of a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information. Althoughprocessor(s) 336 is shown in FIG. 3 as a single entity, this is forillustrative purposes only. In some implementations, processor(s) 336may include a plurality of processing units. These processing units maybe physically located within the same device, or processor(s) 336 mayrepresent processing functionality of a plurality of devices operatingin coordination. Processor(s) 336 may be configured to execute modules316, 318, 320, 322, 324, 326, 328, and/or 330, and/or other modules.Processor(s) 336 may be configured to execute modules 316, 318, 320,322, 324, 326, 328, and/or 330, and/or other modules by software;hardware; firmware; some combination of software, hardware, and/orfirmware; and/or other mechanisms for configuring processingcapabilities on processor(s) 336. As used herein, the term “module” mayrefer to any component or set of components that perform thefunctionality attributed to the module. This may include one or morephysical processors during execution of processor readable instructions,the processor readable instructions, circuitry, hardware, storage media,or any other components.

It should be appreciated that although modules 316, 318, 320, 322, 324,326, 328, and/or 330 are illustrated in FIG. 3 as being implementedwithin a single processing unit, in implementations in whichprocessor(s) 336 includes multiple processing units, one or more ofmodules 316, 318, 320, 322, 324, 326, 328, and/or 330 may be implementedremotely from the other modules. The description of the functionalityprovided by the different modules 316, 318, 320, 322, 324, 326, 328,and/or 330 described below is for illustrative purposes, and is notintended to be limiting, as any of modules 316, 318, 320, 322, 324, 326,328, and/or 330 may provide more or less functionality than isdescribed. For example, one or more of modules 316, 318, 320, 322, 324,326, 328, and/or 330 may be eliminated, and some or all of itsfunctionality may be provided by other ones of modules 316, 318, 320,322, 324, 326, 328, and/or 330. As another example, processor(s) 336 maybe configured to execute one or more additional modules that may performsome or all of the functionality attributed below to one of modules 316,318, 320, 322, 324, 326, 328, and/or 330.

The techniques described herein may be implemented as method(s) that areperformed by physical computing device(s); as one or more non-transitorycomputer-readable storage media storing instructions which, whenexecuted by computing device(s), cause performance of the method(s); or,as physical computing device(s) that are specially configured with acombination of hardware and software that causes performance of themethod(s).

FIG. 4 illustrates an exemplary flow diagram (e.g., process 400) forproviding feedback regarding AR/VR device content, according to certainaspects of the disclosure. For explanatory purposes, the exemplaryprocess 400 is described herein with reference to FIGS. 1 and 3 .Further for explanatory purposes, the steps of the exemplary process 400are described herein as occurring in serial, or linearly. However,multiple instances of the example process 400 may occur in parallel.

At step 410, the process 400 may include detecting, via a sensor of anaugmented reality device having an outwardly facing camera, that a userof the augmented reality device appears within content presented in aview area of the augmented reality device.

At step 412 the process 400 may include responsive to detecting that theuser of the augmented reality device appears within the contentpresented in the view area of the augmented reality device, determiningan action being performed by the user.

At step 414, the process 400 may include, responsive to determining theaction being performed by the user, supplementing the content presentedin the view area of the augmented reality device.

For example, as described above in relation to FIGS. 1 and 3 , at step410, the process 400 may include detecting, via a sensor of an augmentedreality device having an outwardly facing camera, (e.g., through userdetecting module 316 of the system 300 of FIG. 3 ) that a user of theaugmented reality device appears within content presented in a view areaof the augmented reality device. At step 412, the process 400 mayinclude, responsive to detecting that the user of the augmented realitydevice appears within the content presented in the view area of theaugmented reality device, determining an action being performed by theuser (e.g., through action determining module 318 of the system 300 ofFIG. 3 ). At step 414, the process 400 may include, responsive todetermining the action being performed by the user, supplementing thecontent presented in the view area of the augmented reality device(e.g., through content supplementing module 320 of the system 300 ofFIG. 3 ).

FIG. 5 illustrates an exemplary flow diagram for capturing visual imagesof landmarks or other structures/locations of interest via AR/VRdevices, according to certain aspects of the disclosure. For explanatorypurposes, the exemplary process 500 is described herein with referenceto FIGS. 2 and 3 . Further for explanatory purposes, the steps of theexemplary process 500 are described herein as occurring in serial, orlinearly. However, multiple instances of the example process 500 mayoccur in parallel.

At step 510, the process may include detecting, via a sensor of anaugmented reality device having an outwardly facing camera, that a userof the augmented reality device is present at a landmark.

At step 512, the process may include receiving an indication that avisual image is to be captured via the outwardly facing camera of theaugmented reality device.

At step 514, the process may include, based at least in part ondetecting that the user of the augmented reality device is present at alandmark and receiving the indication that the visual image is to becaptured, determining at least one best practice for capturing thevisual image such that the visual image includes the landmark.

At step 516, the process may include causing the at least one bestpractice for capturing the visual image such that the visual imageincludes the landmark to be communicated to the user.

For example, as described above in relation to FIGS. 2 and 3 , at step510, the process 500 may include detecting, via a sensor of an augmentedreality device having an outwardly facing camera, (e.g., throughlandmark detecting module 326 of the system 00 of FIG. 3 ) that a userof the augmented reality device is present at a landmark. At step 512,the process 500 may include receiving an indication that a visual imageis to be captured via the outwardly facing camera of the augmentedreality device (e.g., through image capture indication receiving module328 of the system 300 of FIG. 3 ). At step 514, the process 500 mayinclude, based at least in part on detecting that the user of theaugmented reality device is present at a landmark and receiving theindication that the visual image is to be captured, determining at leastone best practice for capturing the visual image such that the visualimage includes the landmark (e.g., through best practice determiningmodule 330 of the system 300 of FIG. 3 ). At step 516, the process 500may include causing the at least one best practice for capturing thevisual image such that the visual image includes the landmark to becommunicated to the user (e.g., through communicating module 324 of thesystem 300 of FIG. 3 ).

FIG. 6 is a block diagram illustrating an exemplary computer system 600with which aspects of the subject technology can be implemented. Incertain aspects, the computer system 600 may be implemented usinghardware or a combination of software and hardware, either in adedicated server, integrated into another entity, or distributed acrossmultiple entities.

Computer system 600 (e.g., server and/or client) includes a bus 616 orother communication mechanism for communicating information, and aprocessor 610 coupled with bus 616 for processing information. By way ofexample, the computer system 600 may be implemented with one or moreprocessors 610. Processor(s) 610 may be a general-purposemicroprocessor, a microcontroller, a Digital Signal Processor (DSP), anApplication Specific Integrated Circuit (ASIC), a Field ProgrammableGate Array (FPGA), a Programmable Logic Device (PLD), a controller, astate machine, gated logic, discrete hardware components, or any othersuitable entity that can perform calculations or other manipulations ofinformation.

Computer system 600 can include, in addition to hardware, code thatcreates an execution environment for the computer program in question,e.g., code that constitutes processor firmware, a protocol stack, adatabase management system, an operating system, or a combination of oneor more of them stored in an included memory 612, such as a RandomAccess Memory (RAM), a flash memory, a Read Only Memory (ROM), aProgrammable Read-Only Memory (PROM), an Erasable PROM (EPROM),registers, a hard disk, a removable disk, a CD-ROM, a DVD, or any othersuitable storage device, coupled to bus 616 for storing information andinstructions to be executed by processor 610. The processor 610 and thememory 612 can be supplemented by, or incorporated in, special purposelogic circuitry.

The instructions may be stored in the memory 612 and implemented in oneor more computer program products, i.e., one or more modules of computerprogram instructions encoded on a computer readable medium for executionby, or to control the operation of, the computer system 600, andaccording to any method well-known to those of skill in the art,including, but not limited to, computer languages such as data-orientedlanguages (e.g., SQL, dBase), system languages (e.g., C, Objective-C,C++, Assembly), architectural languages (e.g., Java, .NET), andapplication languages (e.g., PHP, Ruby, Perl, Python). Instructions mayalso be implemented in computer languages such as array languages,aspect-oriented languages, assembly languages, authoring languages,command line interface languages, compiled languages, concurrentlanguages, curly-bracket languages, dataflow languages, data-structuredlanguages, declarative languages, esoteric languages, extensionlanguages, fourth-generation languages, functional languages,interactive mode languages, interpreted languages, iterative languages,list-based languages, little languages, logic-based languages, machinelanguages, macro languages, metaprogramming languages, multiparadigmlanguages, numerical analysis, non-English-based languages,object-oriented class-based languages, object-oriented prototype-basedlanguages, off-side rule languages, procedural languages, reflectivelanguages, rule-based languages, scripting languages, stack-basedlanguages, synchronous languages, syntax handling languages, visuallanguages, wirth languages, and xml-based languages. Memory 612 may alsobe used for storing temporary variable or other intermediate informationduring execution of instructions to be executed by processor 610.

A computer program as discussed herein does not necessarily correspondto a file in a file system. A program can be stored in a portion of afile that holds other programs or data (e.g., one or more scripts storedin a markup language document), in a single file dedicated to theprogram in question, or in multiple coordinated files (e.g., files thatstore one or more modules, subprograms, or portions of code). A computerprogram can be deployed to be executed on one computer or on multiplecomputers that are located at one site or distributed across multiplesites and interconnected by a communication network. The processes andlogic flows described in this specification can be performed by one ormore programmable processors executing one or more computer programs toperform functions by operating on input data and generating output.

Computer system 600 further includes a data storage device 614 such as amagnetic disk or optical disk, coupled to bus 616 for storinginformation and instructions. Computer system 600 may be coupled viainput/output module 618 to various devices. The input/output module 618can be any input/output module. Exemplary input/output modules 618include data ports such as USB ports. The input/output module 618 isconfigured to connect to a communications module 620. Exemplarycommunications modules 620 include networking interface cards, such asEthernet cards and modems. In certain aspects, the input/output module618 is configured to connect to a plurality of devices, such as an inputdevice 622 and/or an output device 624. Exemplary input devices 622include a keyboard and a pointing device, e.g., a mouse or a trackball,by which a user can provide input to the computer system 600. Otherkinds of input devices 622 can be used to provide for interaction with auser as well, such as a tactile input device, visual input device, audioinput device, or brain-computer interface device. For example, feedbackprovided to the user can be any form of sensory feedback, e.g., visualfeedback, auditory feedback, or tactile feedback, and input from theuser can be received in any form, including acoustic, speech, tactile,or brain wave input. Exemplary output devices 624 include displaydevices such as an LCD (liquid crystal display) monitor, for displayinginformation to the user.

According to one aspect of the present disclosure, the above-describedsystems can be implemented using a computer system 600 in response toprocessor 610 executing one or more sequences of one or moreinstructions contained in memory 612. Such instructions may be read intomemory 612 from another machine-readable medium, such as data storagedevice 614. Execution of the sequences of instructions contained in themain memory 612 causes processor 610 to perform the process stepsdescribed herein. One or more processors in a multi-processingarrangement may also be employed to execute the sequences ofinstructions contained in memory 612. In alternative aspects, hard-wiredcircuitry may be used in place of or in combination with softwareinstructions to implement various aspects of the present disclosure.Thus, aspects of the present disclosure are not limited to any specificcombination of hardware circuitry and software.

Various aspects of the subject matter described in this specificationcan be implemented in a computing system that includes a back endcomponent, e.g., such as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described in this specification, or anycombination of one or more such back end, middleware, or front endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. The communication network can include, for example, any one ormore of a LAN, a WAN, the Internet, and the like. Further, thecommunication network can include, but is not limited to, for example,any one or more of the following network topologies, including a busnetwork, a star network, a ring network, a mesh network, a star-busnetwork, tree or hierarchical network, or the like. The communicationsmodules can be, for example, modems or Ethernet cards.

Computer system 600 can include clients and servers. A client and serverare generally remote from each other and typically interact through acommunication network. The relationship of client and server arises byvirtue of computer programs running on the respective computers andhaving a client-server relationship to each other. Computer system 600can be, for example, and without limitation, a desktop computer, laptopcomputer, or tablet computer. Computer system 600 can also be embeddedin another device, for example, and without limitation, a mobiletelephone, a PDA, a mobile audio player, a Global Positioning System(GPS) receiver, a video game console, and/or a television set top box.

The term “machine-readable storage medium” or “computer readable medium”as used herein refers to any medium or media that participates inproviding instructions to processor 610 for execution. Such a medium maytake many forms, including, but not limited to, non-volatile media,volatile media, and transmission media. Non-volatile media include, forexample, optical or magnetic disks, such as data storage device 614.Volatile media include dynamic memory, such as memory 612. Transmissionmedia include coaxial cables, copper wire, and fiber optics, includingthe wires that comprise bus 616. Common forms of machine-readable mediainclude, for example, floppy disk, a flexible disk, hard disk, magnetictape, any other magnetic medium, a CD-ROM, DVD, any other opticalmedium, punch cards, paper tape, any other physical medium with patternsof holes, a RAM, a PROM, an EPROM, a FLASH EPROM, any other memory chipor cartridge, or any other medium from which a computer can read. Themachine-readable storage medium can be a machine-readable storagedevice, a machine-readable storage substrate, a memory device, acomposition of matter effecting a machine-readable propagated signal, ora combination of one or more of them.

As the user computing system 600 reads data, information may be readfrom the data and stored in a memory device, such as the memory 612.Additionally, data from the memory 612 servers accessed via a networkthe bus 616, or the data storage device 614 may be read and loaded intothe memory 612. Although data is described as being found in the memory612, it will be understood that data does not have to be stored in thememory 612 and may be stored in other memory accessible to the processor610 or distributed among several media, such as the data storage device614.

Embodiments of the present disclosure may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentdisclosure also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., a memory, etc.), and executes those instructions, therebyperforming one or more processes, including one or more of the processesdescribed herein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general-purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as exemplary formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. In this description, “cloud computing” isdefined as a model for enabling on-demand network access to a sharedpool of configurable computing resources. For example, cloud computingcan be employed in the marketplace to offer ubiquitous and convenienton-demand access to the shared pool of configurable computing resources.The shared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In this description and in the claims, a “cloud-computingenvironment” is an environment in which cloud computing is employed.

FIG. 7 illustrates an exemplary network environment 700 of a networkingsystem (e.g., social networking system 710). Network environment 700includes a client system 714 and a social networking system 710connected to each other by a network 712. Although FIG. 7 illustrates aparticular arrangement of client system 714, social networking system710, and network 712, this disclosure contemplates any suitablearrangement of client system 714, social networking system 710, andnetwork 712. As an example, and not by way of limitation, two or more ofclient system 714 and social networking system 710 may be connected toeach other directly, bypassing network 712. As another example, two ormore of client system 814 and social networking system 710 may bephysically or logically co-located with each other in whole or in part.Moreover, although FIG. 7 illustrates a particular number of clientsystems 714, social networking systems 710, and networks 712, thisdisclosure contemplates any suitable number of client systems 714,social networking systems 710, and networks 712. As an example, and notby way of limitation, network environment 700 may include multipleclient systems 714, social networking systems 710, and networks 712.

This disclosure contemplates any suitable network 712. As an example,and not by way of limitation, one or more portions of network 712 mayinclude an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, or a combinationof two or more of these. Network 712 may include one or more networks712.

Links may connect client system 714 and social networking system 710 tocommunication network 712 or to each other. This disclosure contemplatesany suitable links. In particular embodiments, one or more links includeone or more wireline (such as for example Digital Subscriber Line (DSL)or Data Over Cable Service Interface Specification (DOCSIS)), wireless(such as for example Wi-Fi or Worldwide Interoperability for MicrowaveAccess (WiMAX)), or optical (such as for example Synchronous OpticalNetwork (SONET) or Synchronous Digital Hierarchy (SDH)) links. Inparticular embodiments, one or more links each include an ad hocnetwork, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN,a MAN, a portion of the Internet, a portion of the PSTN, a cellulartechnology-based network, a satellite communications technology-basednetwork, another link, or a combination of two or more such links. Linksneed not necessarily be the same throughout network environment 700. Oneor more first links may differ in one or more respects from one or moresecond links.

In particular embodiments, client system 714 may be an electronic deviceincluding hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functionalities implemented or supported by clientsystem 714. As an example, and not by way of limitation, a client system714 may include any of the computing devices discussed above in relationto FIG. 6 . A client system 714 may enable a network user at clientsystem 714 to access network 712. A client system 714 may enable itsuser to communicate with other users at other client systems 714.

In particular embodiments, client system 714 may include a web browser,such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLA FIREFOX,and may have one or more add-ons, plug-ins, or other extensions, such asTOOLBAR or YAHOO TOOLBAR. A user at client system 714 may enter aUniform Resource Locator (URL) or other address directing the webbrowser to a particular server (such as server, or a server associatedwith a third-party system), and the web browser may generate a HyperText Transfer Protocol (HTTP) request and communicate the HTTP requestto server. The server may accept the HTTP request and communicate toclient system 714 one or more Hyper Text Markup Language (HTML) filesresponsive to the HTTP request. Client system 714 may render a webpagebased on the HTML files from the server for presentation to the user.This disclosure contemplates any suitable webpage files. As an example,and not by way of limitation, webpages may render from HTML files,Extensible Hyper Text Markup Language (XHTML) files, or ExtensibleMarkup Language (XML) files, according to particular needs. Such pagesmay also execute scripts such as, for example and without limitation,those written in JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, combinationsof markup language and scripts such as AJAX (Asynchronous JAVASCRIPT andXML), and the like. Herein, reference to a webpage encompasses one ormore corresponding webpage files (which a browser may use to render thewebpage) and vice versa, where appropriate.

In particular embodiments, social networking system 710 may be anetwork-addressable computing system that can host an online socialnetwork. Social networking system 810 may generate, store, receive, andsend social networking data, such as, for example, user-profile data,concept-profile data, social-graph information, or other suitable datarelated to the online social network. Social networking system 710 maybe accessed by the other components of network environment 700 eitherdirectly or via network 712. In particular embodiments, socialnetworking system 710 may include one or more servers. Each server maybe a unitary server or a distributed server spanning multiple computersor multiple datacenters. Servers may be of various types, such as, forexample and without limitation, web server, news server, mail server,message server, advertising server, file server, application server,exchange server, database server, proxy server, another server suitablefor performing functions or processes described herein, or anycombination thereof. In particular embodiments, each server may includehardware, software, or embedded logic components or a combination of twoor more such components for carrying out the appropriate functionalitiesimplemented or supported by server. In particular embodiments, socialnetworking system 710 may include one or more data stores. Data storesmay be used to store various types of information. In particularembodiments, the information stored in data stores may be organizedaccording to specific data structures. In particular embodiments, eachdata store may be a relational, columnar, correlation, or other suitabledatabase. Although this disclosure describes or illustrates particulartypes of databases, this disclosure contemplates any suitable types ofdatabases. Particular embodiments may provide interfaces that enable aclient system 714, a social networking system 710, or a third-partysystem to manage, retrieve, modify, add, or delete, the informationstored in data store.

In particular embodiments, social networking system 710 may store one ormore social graphs in one or more data stores. In particularembodiments, a social graph may include multiple nodes—which may includemultiple user nodes (each corresponding to a particular user) ormultiple concept nodes (each corresponding to a particular concept)—andmultiple edges connecting the nodes. Social networking system 710 mayprovide users of the online social network the ability to communicateand interact with other users. In particular embodiments, users may jointhe online social network via social networking system 710 and then addconnections (e.g., relationships) to a number of other users of socialnetworking system 710 whom they want to be connected to. Herein, theterm “friend” may refer to any other user of social networking system710 with whom a user has formed a connection, association, orrelationship via social networking system 710.

In particular embodiments, social networking system 710 may provideusers with the ability to take actions on various types of items orobjects, supported by social networking system 710. As an example, andnot by way of limitation, the items and objects may include groups orsocial networks to which users of social networking system 710 maybelong, events or calendar entries in which a user might be interested,computer-based applications that a user may use, transactions that allowusers to buy or sell items via the service, interactions withadvertisements that a user may perform, or other suitable items orobjects. A user may interact with anything that is capable of beingrepresented in social networking system 710 or by an external system ofa third-party system, which is separate from social networking system710 and coupled to social networking system 710 via a network 712.

In particular embodiments, social networking system 710 may be capableof linking a variety of entities. As an example, and not by way oflimitation, social networking system 710 may enable users to interactwith each other as well as receive content from third-party systems orother entities, or to allow users to interact with these entitiesthrough an application programming interfaces (API) or othercommunication channels.

In particular embodiments, a third-party system may include one or moretypes of servers, one or more data stores, one or more interfaces,including but not limited to APIs, one or more web services, one or morecontent sources, one or more networks, or any other suitable components,e.g., that servers may communicate with. A third-party system may beoperated by a different entity from an entity operating socialnetworking system 710. In particular embodiments, however, socialnetworking system 710 and third-party systems may operate in conjunctionwith each other to provide social networking services to users of socialnetworking system 710. In this sense, social networking system 710 mayprovide a platform, or backbone, which other systems, such asthird-party systems, may use to provide social networking services andfunctionality to users across the Internet.

In particular embodiments, a third-party system may include athird-party content object provider. A third-party content objectprovider may include one or more sources of content objects, which maybe communicated to a client system 714. As an example, and not by way oflimitation, content objects may include information regarding things oractivities of interest to the user, such as, for example, movie showtimes, movie reviews, restaurant reviews, restaurant menus, productinformation and reviews, or other suitable information. As anotherexample and not by way of limitation, content objects may includeincentive content objects, such as coupons, discount tickets, giftcertificates, or other suitable incentive objects.

In particular embodiments, social networking system 710 also includesuser-generated content objects, which may enhance a user's interactionswith social networking system 710. User-generated content may includeanything a user can add, upload, send, or “post” to social networkingsystem 710. As an example, and not by way of limitation, a usercommunicates posts to social networking system 710 from a client system714. Posts may include data such as status updates or other textualdata, location information, photos, videos, links, music or othersimilar data or media. Content may also be added to social networkingsystem 710 by a third-party through a “communication channel,” such as anewsfeed or stream.

In particular embodiments, social networking system 710 may include avariety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, social networking system 710 mayinclude one or more of the following: a web server, action logger,API-request server, relevance-and-ranking engine, content-objectclassifier, notification controller, action log,third-party-content-object-exposure log, inference module,authorization/privacy server, search module, advertisement-targetingmodule, user-interface module, user-profile store, connection store,third-party content store, or location store. Social networking system710 may also include suitable components such as network interfaces,security mechanisms, load balancers, failover servers,management-and-network-operations consoles, other suitable components,or any suitable combination thereof. In particular embodiments, socialnetworking system 710 may include one or more user-profile stores forstoring user profiles. A user profile may include, for example,biographic information, demographic information, behavioral information,social information, or other types of descriptive information, such aswork experience, educational history, hobbies or preferences, interests,affinities, or location. Interest information may include interestsrelated to one or more categories. Categories may be general orspecific. As an example, and not by way of limitation, if a user “likes”an article about a brand of shoes the category may be the brand, or thegeneral category of “shoes” or “clothing.” A connection store may beused for storing connection information about users. The connectioninformation may indicate users who have similar or common workexperience, group memberships, hobbies, educational history, or are inany way related or share common attributes. The connection informationmay also include user-defined connections between different users andcontent (both internal and external). A web server may be used forlinking social networking system 710 to one or more client systems 714or one or more third-party system via network 712. The web server mayinclude a mail server or other messaging functionality for receiving androuting messages between social networking system 710 and one or moreclient systems 714. An API-request server may allow a third-party systemto access information from social networking system 710 by calling oneor more APIs. An action logger may be used to receive communicationsfrom a web server about a user's actions on or off social networkingsystem 710. In conjunction with the action log, a thirdparty-content-object log may be maintained of user exposures to thirdparty-content objects. A notification controller may provide informationregarding content objects to a client system 714. Information may bepushed to a client system 714 as notifications, or information may bepulled from client system 714 responsive to a request received fromclient system 714. Authorization servers may be used to enforce one ormore privacy settings of the users of social networking system 710. Aprivacy setting of a user determines how particular informationassociated with a user can be shared. The authorization server may allowusers to opt in to or opt out of having their actions logged by socialnetworking system 710 or shared with other systems, such as, forexample, by setting appropriate privacy settings. Thirdparty-content-object stores may be used to store content objectsreceived from third parties, such as a third-party system. Locationstores may be used for storing location information received from clientsystems 714 associated with users. Advertisement-pricing modules maycombine social information, the current time, location information, orother suitable information to provide relevant advertisements, in theform of notifications, to a user.

FIG. 8 illustrates exemplary social graph 800. In particularembodiments, social networking system 710 may store one or more socialgraphs 800 in one or more data stores. In particular embodiments, socialgraph 800 may include multiple nodes—which may include multiple usernodes 810 or multiple concept nodes 812—and multiple edges 814connecting the nodes. Exemplary social graph 800 illustrated in FIG. 8is shown, for didactic purposes, in a two-dimensional visual maprepresentation. In particular embodiments, a social networking system710, client system 714, or third-party system may access social graph800 and related social-graph information for suitable applications. Thenodes and edges of social graph 800 may be stored as data objects, forexample, in a data store (such as a social-graph database). Such a datastore may include one or more searchable or query able indexes of nodesor edges of social graph 800.

In particular embodiments, a user node 810 may correspond to a user ofsocial networking system 710. As an example, and not by way oflimitation, a user may be an individual (human user), an entity (e.g.,an enterprise, business, or third-party application), or a group (e.g.,of individuals or entities) that interacts or communicates with or oversocial networking system 710. In particular embodiments, when a userregisters for an account with social networking system 710, socialnetworking system 710 may create a user node 810 corresponding to theuser and store the user node 810 in one or more data stores. Users anduser nodes 810 described herein may, where appropriate, refer toregistered users and user nodes 810 associated with registered users. Inaddition, or as an alternative, users and user nodes 810 describedherein may, where appropriate, refer to users that have not registeredwith social networking system 710. In particular embodiments, a usernode 810 may be associated with information provided by a user orinformation gathered by various systems, including social networkingsystem 710. As an example, and not by way of limitation, a user mayprovide his or her name, profile picture, contact information, birthdate, sex, marital status, family status, employment, educationbackground, preferences, interests, or other demographic information.Each user node of the social graph may have a corresponding web page(typically known as a profile page). In response to a request includinga username, the social networking system can access a user nodecorresponding to the username, and construct a profile page includingthe name, a profile picture, and other information associated with theuser. A profile page of a first user may display to a second user all ora portion of the first user's information based on one or more privacysettings by the first user and the relationship between the first userand the second user.

In particular embodiments, a concept node 812 may correspond to aconcept. As an example and not by way of limitation, a concept maycorrespond to a place (such as, for example, a movie theater,restaurant, landmark, or city); a website (such as, for example, awebsite associated with social networking system 710 or a third-partywebsite associated with a web-application server); an entity (such as,for example, a person, business, group, sports team, or celebrity); aresource (such as, for example, an audio file, video file, digitalphoto, text file, structured document, or application) which may belocated within social networking system 710 or on an external server,such as a web-application server; real or intellectual property (suchas, for example, a sculpture, painting, movie, game, song, idea,photograph, or written work); a game; an activity; an idea or theory;another suitable concept; or two or more such concepts. A concept node812 may be associated with information of a concept provided by a useror information gathered by various systems, including social networkingsystem 710. As an example, and not by way of limitation, information ofa concept may include a name or a title; one or more images (e.g., animage of the cover page of a book); a location (e.g., an address or ageographical location); a web site (which may be associated with a URL);contact information (e.g., a phone number or an email address); othersuitable concept information; or any suitable combination of suchinformation. In particular embodiments, a concept node 812 may beassociated with one or more data objects corresponding to informationassociated with concept node 812. In particular embodiments, a conceptnode 812 may correspond to one or more webpages.

In particular embodiments, a node in social graph 800 may represent orbe represented by a webpage (which may be referred to as a “profilepage”). Profile pages may be hosted by or accessible to socialnetworking system 710. Profile pages may also be hosted on third-partywebsites associated with a third-party system. As an example, and not byway of limitation, a profile page corresponding to a particular externalwebpage may be the particular external webpage and the profile page maycorrespond to a particular concept node 812. Profile pages may beviewable by all or a selected subset of other users. As an example, andnot by way of limitation, a user node 810 may have a correspondinguser-profile page in which the corresponding user may add content, makedeclarations, or otherwise express himself or herself. As anotherexample, and not by way of limitation, a concept node 812 may have acorresponding concept-profile page in which one or more users may addcontent, make declarations, or express themselves, particularly inrelation to the concept corresponding to concept node 812.

In particular embodiments, a concept node 812 may represent athird-party webpage or resource hosted by a third-party system. Thethird-party webpage or resource may include, among other elements,content, a selectable or other icon, or other inter-actable object(which may be implemented, for example, in JavaScript, AJAX, or PHPcodes) representing an action or activity. As an example, and not by wayof limitation, a third-party webpage may include a selectable icon suchas “like,” “check in,” “eat,” “recommend,” or another suitable action oractivity. A user viewing the third-party webpage may perform an actionby selecting one of the icons (e.g., “eat”), causing a client system 714to send to social networking system 710 a message indicating the user'saction. In response to the message, social networking system 710 maycreate an edge (e.g., an “eat” edge) between a user node 810corresponding to the user and a concept node 812 corresponding to thethird-party webpage or resource and store edge 814 in one or more datastores.

In particular embodiments, a pair of nodes in social graph 800 may beconnected to each other by one or more edges 814. An edge 814 connectinga pair of nodes may represent a relationship between the pair of nodes.In particular embodiments, an edge 814 may include or represent one ormore data objects or attributes corresponding to the relationshipbetween a pair of nodes. As an example, and not by way of limitation, afirst user may indicate that a second user is a “friend” of the firstuser. In response to this indication, social networking system 710 maysend a “friend request” to the second user. If the second user confirmsthe “friend request,” social networking system 710 may create an edge814 connecting the first user's user node 810 to the second user's usernode 810 in social graph 800 and store edge 814 as social-graphinformation in one or more of data stores. In FIG. 8 , the exemplarysocial graph 800 includes an edge 814 indicating a friend relationbetween user nodes 810 of user “A” and user “B” and an edge indicating afriend relation between user nodes 810 of user “C” and user “B.”Although this disclosure describes or illustrates particular edges 814with particular attributes connecting particular user nodes 810, thisdisclosure contemplates any suitable edges 814 with any suitableattributes connecting user nodes 810. As an example, and not by way oflimitation, an edge 814 may represent a friendship, family relationship,business or employment relationship, fan relationship, followerrelationship, visitor relationship, subscriber relationship,superior/subordinate relationship, reciprocal relationship,non-reciprocal relationship, another suitable type of relationship, ortwo or more such relationships. Moreover, although this disclosuregenerally describes nodes as being connected, this disclosure alsodescribes users or concepts as being connected. Herein, references tousers or concepts being connected may, where appropriate, refer to thenodes corresponding to those users or concepts being connected in socialgraph 800 by one or more edges 814.

In particular embodiments, an edge 814 between a user node 810 and aconcept node 812 may represent a particular action or activity performedby a user associated with user node 810 toward a concept associated witha concept node 812. As an example, and not by way of limitation, asillustrated in FIG. 8 , a user may “like,” “attended,” “played,”“listened,” “cooked,” “worked at,” or “watched” a concept, each of whichmay correspond to an edge type or subtype. A concept-profile pagecorresponding to a concept node 812 may include, for example, aselectable “check in” icon (such as, for example, a clickable “check in”icon) or a selectable “add to favorites” icon. Similarly, after a userclicks these icons, social networking system 710 may create a “favorite”edge or a “check in” edge in response to a user's action correspondingto a respective action. As another example, and not by way oflimitation, a user (user “C”) may listen to a particular song (“RambleOn”) using a particular application (SPOTIFY, which is an online musicapplication). In this case, social networking system 710 may create a“listened” edge 814 and a “used” edge (as illustrated in FIG. 8 )between user nodes 810 corresponding to the user and concept nodes 812corresponding to the song and application to indicate that the userlistened to the song and used the application. Moreover, socialnetworking system 810 may create a “played” edge 814 (as illustrated inFIG. 8 ) between concept nodes 812 corresponding to the song and theapplication to indicate that the particular song was played by theparticular application. In this case, “played” edge 814 corresponds toan action performed by an external application (SPOTIFY) on an externalaudio file (the song “Imagine”). Although this disclosure describesparticular edges 814 with particular attributes connecting user nodes810 and concept nodes 812, this disclosure contemplates any suitableedges 814 with any suitable attributes connecting user nodes 810 andconcept nodes 812. Moreover, although this disclosure describes edgesbetween a user node 810 and a concept node 812 representing a singlerelationship, this disclosure contemplates edges between a user node 810and a concept node 812 representing one or more relationships. As anexample, and not by way of limitation, an edge 814 may represent boththat a user likes and has used at a particular concept. Alternatively,another edge 814 may represent each type of relationship (or multiplesof a single relationship) between a user node 810 and a concept node 812(as illustrated in FIG. 8 between user node 810 for user “E” and conceptnode 812 for “SPOTIFY”).

In particular embodiments, social networking system 710 may create anedge 814 between a user node 810 and a concept node 812 in social graph800. As an example, and not by way of limitation, a user viewing aconcept-profile page (such as, for example, by using a web browser or aspecial-purpose application hosted by the user's client system 714) mayindicate that he or she likes the concept represented by the conceptnode 812 by clicking or selecting a “Like” icon, which may cause theuser's client system 714 to send to social networking system 710 amessage indicating the user's liking of the concept associated with theconcept-profile page. In response to the message, social networkingsystem 710 may create an edge 814 between user node 810 associated withthe user and concept node 812, as illustrated by “like” edge 814 betweenthe user and concept node 812. In particular embodiments, socialnetworking system 710 may store an edge 814 in one or more data stores.In particular embodiments, an edge 814 may be automatically formed bysocial networking system 710 in response to a particular user action. Asan example, and not by way of limitation, if a first user uploads apicture, watches a movie, or listens to a song, an edge 814 may beformed between user node 810 corresponding to the first user and conceptnodes 812 corresponding to those concepts. Although this disclosuredescribes forming particular edges 814 in particular manners, thisdisclosure contemplates forming any suitable edges 814 in any suitablemanner.

In particular embodiments, an advertisement may be text (which may beHTML-linked), one or more images (which may be HTML-linked), one or morevideos, audio, one or more ADOBE FLASH files, a suitable combination ofthese, or any other suitable advertisement in any suitable digitalformat presented on one or more webpages, in one or more e-mails, or inconnection with search results requested by a user. In addition, or asan alternative, an advertisement may be one or more sponsored stories(e.g., a newsfeed or ticker item on social networking system 710). Asponsored story may be a social action by a user (such as “liking” apage, “liking” or commenting on a post on a page, RSVPing to an eventassociated with a page, voting on a question posted on a page, checkingin to a place, using an application or playing a game, or “liking” orsharing a website) that an advertiser promotes, for example, by havingthe social action presented within a pre-determined area of a profilepage of a user or other page, presented with additional informationassociated with the advertiser, bumped up or otherwise highlightedwithin news feeds or tickers of other users, or otherwise promoted. Theadvertiser may pay to have the social action promoted. As an example,and not by way of limitation, advertisements may be included among thesearch results of a search-results page, where sponsored content ispromoted over non-sponsored content.

In particular embodiments, an advertisement may be requested for displaywithin social networking-system webpages, third-party webpages, or otherpages. An advertisement may be displayed in a dedicated portion of apage, such as in a banner area at the top of the page, in a column atthe side of the page, in a GUI of the page, in a pop-up window, in adrop-down menu, in an input field of the page, over the top of contentof the page, or elsewhere with respect to the page. In addition, or asan alternative, an advertisement may be displayed within an application.An advertisement may be displayed within dedicated pages, requiring theuser to interact with or watch the advertisement before the user mayaccess a page or utilize an application. The user may, for example, viewthe advertisement through a web browser.

A user may interact with an advertisement in any suitable manner. Theuser may click or otherwise select the advertisement. By selecting theadvertisement, the user may be directed to (or a browser or otherapplication being used by the user) a page associated with theadvertisement. At the page associated with the advertisement, the usermay take additional actions, such as purchasing a product or serviceassociated with the advertisement, receiving information associated withthe advertisement, or subscribing to a newsletter associated with theadvertisement. An advertisement with audio or video may be played byselecting a component of the advertisement (like a “play button”).Alternatively, by selecting the advertisement, social networking system710 may execute or modify a particular action of the user.

An advertisement may also include social networking-system functionalitythat a user may interact with. As an example, and not by way oflimitation, an advertisement may enable a user to “like” or otherwiseendorse the advertisement by selecting an icon or link associated withendorsement. As another example, and not by way of limitation, anadvertisement may enable a user to search (e.g., by executing a query)for content related to the advertiser. Similarly, a user may share theadvertisement with another user (e.g., through social networking system710) or RSVP (e.g., through social networking system 710) to an eventassociated with the advertisement. In addition, or as an alternative, anadvertisement may include social networking-system context directed tothe user. As an example, and not by way of limitation, an advertisementmay display information about a friend of the user within socialnetworking system 710 who has taken an action associated with thesubject matter of the advertisement.

In particular embodiments, social networking system 710 may determinethe social-graph affinity (which may be referred to herein as“affinity”) of various social-graph entities for each other. Affinitymay represent the strength of a relationship or level of interestbetween particular objects associated with the online social network,such as users, concepts, content, actions, advertisements, other objectsassociated with the online social network, or any suitable combinationthereof. Affinity may also be determined with respect to objectsassociated with third-party systems or other suitable systems. Anoverall affinity for a social-graph entity for each user, subjectmatter, or type of content may be established. The overall affinity maychange based on continued monitoring of the actions or relationshipsassociated with the social-graph entity. Although this disclosuredescribes determining particular affinities in a particular manner, thisdisclosure contemplates determining any suitable affinities in anysuitable manner.

In particular embodiments, social networking system 710 may measure orquantify social-graph affinity using an affinity coefficient (which maybe referred to herein as “coefficient”). The coefficient may representor quantify the strength of a relationship between particular objectsassociated with the online social network. The coefficient may alsorepresent a probability or function that measures a predictedprobability that a user will perform a particular action based on theuser's interest in the action. In this way, a user's future actions maybe predicted based on the user's prior actions, where the coefficientmay be calculated at least in part on the history of the user's actions.Coefficients may be used to predict any number of actions, which may bewithin or outside of the online social network. As an example, and notby way of limitation, these actions may include various types ofcommunications, such as sending messages, posting content, or commentingon content; various types of observation actions, such as accessing orviewing profile pages, media, or other suitable content; various typesof coincidence information about two or more social-graph entities, suchas being in the same group, tagged in the same photograph, checked-in atthe same location, or attending the same event; or other suitableactions. Although this disclosure describes measuring affinity in aparticular manner, this disclosure contemplates measuring affinity inany suitable manner.

In particular embodiments, social networking system 710 may use avariety of factors to calculate a coefficient. These factors mayinclude, for example, user actions, types of relationships betweenobjects, location information, other suitable factors, or anycombination thereof. In particular embodiments, different factors may beweighted differently when calculating the coefficient. The weights foreach factor may be static or the weights may change according to, forexample, the user, the type of relationship, the type of action, theuser's location, and so forth. Ratings for the factors may be combinedaccording to their weights to determine an overall coefficient for theuser. As an example, and not by way of limitation, particular useractions may be assigned both a rating and a weight while a relationshipassociated with the particular user action is assigned a rating and acorrelating weight (e.g., so the weights total 90%). To calculate thecoefficient of a user towards a particular object, the rating assignedto the user's actions may comprise, for example, 90% of the overallcoefficient, while the relationship between the user and the object maycomprise 40% of the overall coefficient. In particular embodiments, thesocial networking system 710 may consider a variety of variables whendetermining weights for various factors used to calculate a coefficient,such as, for example, the time since information was accessed, decayfactors, frequency of access, relationship to information orrelationship to the object about which information was accessed,relationship to social-graph entities connected to the object, short- orlong-term averages of user actions, user feedback, other suitablevariables, or any combination thereof. As an example, and not by way oflimitation, a coefficient may include a decay factor that causes thestrength of the signal provided by particular actions to decay withtime, such that more recent actions are more relevant when calculatingthe coefficient. The ratings and weights may be continuously updatedbased on continued tracking of the actions upon which the coefficient isbased. Any type of process or algorithm may be employed for assigning,combining, averaging, and so forth the ratings for each factor and theweights assigned to the factors. In particular embodiments, socialnetworking system 710 may determine coefficients using machine-learningalgorithms trained on historical actions and past user responses, ordata farmed from users by exposing them to various options and measuringresponses. Although this disclosure describes calculating coefficientsin a particular manner, this disclosure contemplates calculatingcoefficients in any suitable manner.

In particular embodiments, social networking system 710 may calculate acoefficient based on a user's actions. Social networking system 710 maymonitor such actions on the online social network, on a third-partysystem, on other suitable systems, or any combination thereof. Anysuitable type of user actions may be tracked or monitored. Exemplaryuser actions include viewing profile pages, creating or posting content,interacting with content, joining groups, listing and confirmingattendance at events, checking-in at locations, liking particular pages,creating pages, and performing other tasks that facilitate socialaction. In particular embodiments, social networking system 710 maycalculate a coefficient based on the user's actions with particulartypes of content. The content may be associated with the online socialnetwork, a third-party system, or another suitable system. The contentmay include users, profile pages, posts, news stories, headlines,instant messages, chat room conversations, emails, advertisements,pictures, video, music, other suitable objects, or any combinationthereof. Social networking system 710 may analyze a user's actions todetermine whether one or more of the actions indicate an affinity forsubject matter, content, other users, and so forth. As an example, andnot by way of limitation, if a user may make frequently posts contentrelated to “coffee” or variants thereof, social networking system 710may determine the user has a high coefficient with respect to theconcept “coffee”. Particular actions or types of actions may be assigneda higher weight and/or rating than other actions, which may affect theoverall calculated coefficient. As an example, and not by way oflimitation, if a first user emails a second user, the weight or therating for the action may be higher than if the first user simply viewsthe user-profile page for the second user.

In particular embodiments, social networking system 710 may calculate acoefficient based on the type of relationship between particularobjects. Referencing the social graph 800, social networking system 710may analyze the number and/or type of edges 814 connecting particularuser nodes 810 and concept nodes 812 when calculating a coefficient. Asan example, and not by way of limitation, user nodes 810 that areconnected by a spouse-type edge (representing that the two users aremarried) may be assigned a higher coefficient than user nodes 810 thatare connected by a friend-type edge. In other words, depending upon theweights assigned to the actions and relationships for the particularuser, the overall affinity may be determined to be higher for contentabout the user's spouse than for content about the user's friend. Inparticular embodiments, the relationships a user has with another objectmay affect the weights and/or the ratings of the user's actions withrespect to calculating the coefficient for that object. As an example,and not by way of limitation, if a user is tagged in first photo, butmerely likes a second photo, social networking system 710 may determinethat the user has a higher coefficient with respect to the first photothan the second photo because having a tagged-in-type relationship withcontent may be assigned a higher weight and/or rating than having alike-type relationship with content. In particular embodiments, socialnetworking system 810 may calculate a coefficient for a first user basedon the relationship one or more second users have with a particularobject. In other words, the connections and coefficients other usershave with an object may affect the first user's coefficient for theobject. As an example, and not by way of limitation, if a first user isconnected to or has a high coefficient for one or more second users, andthose second users are connected to or have a high coefficient for aparticular object, social networking system 710 may determine that thefirst user should also have a relatively high coefficient for theparticular object. In particular embodiments, the coefficient may bebased on the degree of separation between particular objects. Degree ofseparation between any two nodes is defined as the minimum number ofhops required to traverse the social graph from one node to the other. Adegree of separation between two nodes can be considered a measure ofrelatedness between the users or the concepts represented by the twonodes in the social graph. For example, two users having user nodes thatare directly connected by an edge (i.e., are first-degree nodes) may bedescribed as “connected users” or “friends.” Similarly, two users havinguser nodes that are connected only through another user node (i.e., aresecond-degree nodes) may be described as “friends of friends.” The lowercoefficient may represent the decreasing likelihood that the first userwill share an interest in content objects of the user that is indirectlyconnected to the first user in the social graph 800. As an example, andnot by way of limitation, social-graph entities that are closer in thesocial graph 800 (i.e., fewer degrees of separation) may have a highercoefficient than entities that are further apart in the social graph800.

In particular embodiments, social networking system 710 may calculate acoefficient based on location information. Objects that aregeographically closer to each other may be considered to be morerelated, or of more interest, to each other than more distant objects.In particular embodiments, the coefficient of a user towards aparticular object may be based on the proximity of the object's locationto a current location associated with the user (or the location of aclient system 714 of the user). A first user may be more interested inother users or concepts that are closer to the first user. As anexample, and not by way of limitation, if a user is one mile from anairport and two miles from a gas station, social networking system 710may determine that the user has a higher coefficient for the airportthan the gas station based on the proximity of the airport to the user.

In particular embodiments, social networking system 710 may performparticular actions with respect to a user based on coefficientinformation. Coefficients may be used to predict whether a user willperform a particular action based on the user's interest in the action.A coefficient may be used when generating or presenting any type ofobjects to a user, such as advertisements, search results, news stories,media, messages, notifications, or other suitable objects. Thecoefficient may also be utilized to rank and order such objects, asappropriate. In this way, social networking system 710 may provideinformation that is relevant to user's interests and currentcircumstances, increasing the likelihood that they will find suchinformation of interest. In particular embodiments, social networkingsystem 810 may generate content based on coefficient information.Content objects may be provided or selected based on coefficientsspecific to a user. As an example, and not by way of limitation, thecoefficient may be used to generate media for the user, where the usermay be presented with media for which the user has a high overallcoefficient with respect to the media object. As another example, andnot by way of limitation, the coefficient may be used to generateadvertisements for the user, where the user may be presented withadvertisements for which the user has a high overall coefficient withrespect to the advertised object. In particular embodiments, socialnetworking system 710 may generate search results based on coefficientinformation. Search results for a particular user may be scored orranked based on the coefficient associated with the search results withrespect to the querying user. As an example, and not by way oflimitation, search results corresponding to objects with highercoefficients may be ranked higher on a search-results page than resultscorresponding to objects having lower coefficients.

In particular embodiments, social networking system 710 may calculate acoefficient in response to a request for a coefficient from a particularsystem or process. To predict the likely actions a user may take (or maybe the subject of) in a given situation, any process may request acalculated coefficient for a user. The request may also include a set ofweights to use for various factors used to calculate the coefficient.This request may come from a process running on the online socialnetwork, from a third-party system (e.g., via an API or othercommunication channel), or from another suitable system. In response tothe request, social networking system 710 may calculate the coefficient(or access the coefficient information if it has previously beencalculated and stored). In particular embodiments, social networkingsystem 710 may measure an affinity with respect to a particular process.Different processes (both internal and external to the online socialnetwork) may request a coefficient for a particular object or set ofobjects. Social networking system 710 may provide a measure of affinitythat is relevant to the particular process that requested the measure ofaffinity. In this way, each process receives a measure of affinity thatis tailored for the different context in which the process will use themeasure of affinity.

In connection with social-graph affinity and affinity coefficients,particular embodiments may utilize one or more systems, components,elements, functions, methods, operations, or steps disclosed in U.S.Pat. No. 8,402,094, issued Mar. 19, 2013 and U.S. Patent Publication No.2012/0166532, filed Dec. 23, 2010 (now abandoned), each of which isincorporated herein by reference.

In particular embodiments, one or more of the content objects of theonline social network may be associated with a privacy setting. Theprivacy settings (or “access settings”) for an object may be stored inany suitable manner, such as, for example, in association with theobject, in an index on an authorization server, in another suitablemanner, or any combination thereof. A privacy setting of an object mayspecify how the object (or particular information associated with anobject) can be accessed (e.g., viewed or shared) using the online socialnetwork. Where the privacy settings for an object allow a particularuser to access that object, the object may be described as being“visible” with respect to that user. As an example, and not by way oflimitation, a user of the online social network may specify privacysettings for a user-profile page identify a set of users that may accessthe work experience information on the user-profile page, thus excludingother users from accessing the information. In particular embodiments,the privacy settings may specify a “blocked list” of users that shouldnot be allowed to access certain information associated with the object.In other words, the blocked list may specify one or more users orentities for which an object is not visible. As an example, and not byway of limitation, a user may specify a set of users that may not accessphotos albums associated with the user, thus excluding those users fromaccessing the photo albums (while also possibly allowing certain usersnot within the set of users to access the photo albums). In particularembodiments, privacy settings may be associated with particularsocial-graph elements. Privacy settings of a social-graph element, suchas a node or an edge, may specify how the social-graph element,information associated wit6ty9h the social-graph element, or contentobjects associated with the social-graph element can be accessed usingthe online social network. As an example, and not by way of limitation,a particular concept node 812 corresponding to a particular photo mayhave a privacy setting specifying that the photo may only be accessed byusers tagged in the photo and their friends. In particular embodiments,privacy settings may allow users to opt in or opt out of having theiractions logged by social networking system 710 or shared with othersystems (e.g., third-party system). In particular embodiments, theprivacy settings associated with an object may specify any suitablegranularity of permitted access or denial of access. As an example, andnot by way of limitation, access or denial of access may be specifiedfor particular users (e.g., only me, my roommates, and my boss), userswithin a particular degrees-of-separation (e.g., friends, orfriends-of-friends), user groups (e.g., the gaming club, my family),user networks (e.g., employees of particular employers, students oralumni of particular university), all users (“public”), no users(“private”), users of third-party systems, particular applications(e.g., third-party applications, external websites), other suitableusers or entities, or any combination thereof. Although this disclosuredescribes using particular privacy settings in a particular manner, thisdisclosure contemplates using any suitable privacy settings in anysuitable manner.

In particular embodiments, one or more servers may beauthorization/privacy servers for enforcing privacy settings. Inresponse to a request from a user (or other entity) for a particularobject stored in a data store, social networking system 710 may send arequest to the data store for the object. The request may identify theuser associated with the request and may only be sent to the user (or aclient system 714 of the user) if the authorization server determinesthat the user is authorized to access the object based on the privacysettings associated with the object. If the requesting user is notauthorized to access the object, the authorization server may preventthe requested object from being retrieved from the data store or mayprevent the requested object from be sent to the user. In the searchquery context, an object may only be generated as a search result if thequerying user is authorized to access the object. In other words, theobject must have a visibility that is visible to the querying user. Ifthe object has a visibility that is not visible to the user, the objectmay be excluded from the search results. Although this disclosuredescribes enforcing privacy settings in a particular manner, thisdisclosure contemplates enforcing privacy settings in any suitablemanner.

In the foregoing specification, the present disclosure has beendescribed with reference to specific exemplary embodiments thereof.Various embodiments and aspects of the present disclosure(s) aredescribed with reference to details discussed herein, and theaccompanying drawings illustrate the various embodiments. Thedescription above and drawings are illustrative of the disclosure andare not to be construed as limiting the disclosure. Numerous specificdetails are described to provide a thorough understanding of variousembodiments of the present disclosure.

The present disclosure may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. For example, the methods described herein may beperformed with less or more steps/acts or the steps/acts may beperformed in differing orders. Additionally, the steps/acts describedherein may be repeated or performed in parallel with one another or inparallel with different instances of the same or similar steps/acts. Thescope of the present application is, therefore, indicated by theappended claims rather than by the foregoing description. All changesthat come within the meaning and range of equivalency of the claims areto be embraced within their scope.

Various aspects of the subject matter described in this specificationcan be implemented in a computing system that includes a back endcomponent, e.g., such as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described in this specification, or anycombination of one or more such back end, middleware, or front endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. The communication network can include, for example, any one ormore of a LAN, a WAN, the Internet, and the like. Further, thecommunication network can include, but is not limited to, for example,any one or more of the following network topologies, including a busnetwork, a star network, a ring network, a mesh network, a star-busnetwork, tree or hierarchical network, or the like. The communicationsmodules can be, for example, modems or Ethernet cards.

As used herein, the phrase “at least one of” preceding a series ofitems, with the terms “and” or “or” to separate any of the items,modifies the list as a whole, rather than each member of the list (i.e.,each item). The phrase “at least one of” does not require selection ofat least one item; rather, the phrase allows a meaning that includes atleast one of any one of the items, and/or at least one of anycombination of the items, and/or at least one of each of the items. Byway of example, the phrases “at least one of A, B, and C” or “at leastone of A, B, or C” each refer to only A, only B, or only C; anycombination of A, B, and C; and/or at least one of each of A, B, and C.

To the extent that the terms “include”, “have”, or the like is used inthe description or the claims, such term is intended to be inclusive ina manner similar to the term “comprise” as “comprise” is interpretedwhen employed as a transitional word in a claim. The word “exemplary” isused herein to mean “serving as an example, instance, or illustration”.Any embodiment described herein as “exemplary” is not necessarily to beconstrued as preferred or advantageous over other embodiments.

A reference to an element in the singular is not intended to mean “oneand only one” unless specifically stated, but rather “one or more”. Allstructural and functional equivalents to the elements of the variousconfigurations described throughout this disclosure that are known orlater come to be known to those of ordinary skill in the art areexpressly incorporated herein by reference and intended to beencompassed by the subject technology. Moreover, nothing disclosedherein is intended to be dedicated to the public regardless of whethersuch disclosure is explicitly recited in the above description.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of what may be claimed, but ratheras descriptions of particular implementations of the subject matter.Certain features that are described in this specification in the contextof separate embodiments can also be implemented in combination in asingle embodiment. Conversely, various features that are described inthe context of a single embodiment can also be implemented in multipleembodiments separately or in any suitable sub-combination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asub-combination or variation of a sub-combination.

The subject matter of this specification has been described in terms ofparticular aspects, but other aspects can be implemented and are withinthe scope of the following claims. For example, while operations aredepicted in the drawings in a particular order, this should not beunderstood as requiring that such operations be performed in theparticular order shown or in sequential order, or that all illustratedoperations be performed to achieve desirable results. The actionsrecited in the claims can be performed in a different order and stillachieve desirable results. As one example, the processes depicted in theaccompanying figures do not necessarily require the particular ordershown, or sequential order, to achieve desirable results. In certaincircumstances, multitasking and parallel processing may be advantageous.Moreover, the separation of various system components in the aspectsdescribed above should not be understood as requiring such separation inall aspects, and it should be understood that the described programcomponents and systems can generally be integrated together in a singlesoftware product or packaged into multiple software products. Othervariations are within the scope of the following claims.

What is claimed is:
 1. A computer-implemented method for providingfeedback regarding augmented reality device content, the methodcomprising: detecting, via a sensor of an augmented reality devicehaving an outwardly facing camera, that a user of the augmented realitydevice appears within content presented in a view area of the augmentedreality device; responsive to detecting that the user of the augmentedreality device appears within the content presented in the view area ofthe augmented reality device, determining an action being performed bythe user; and responsive to determining the action being performed bythe user, supplementing the content presented in the view area of theaugmented reality device.
 2. The computer-implemented method of claim 1,wherein the augmented reality device is a wearable, head-mountedaugmented reality device.
 3. The computer-implemented method of claim 1,wherein detecting, via the sensor of the augmented reality device thatthe user of the augmented reality device appears within the contentpresented in the view area of the augmented reality device comprisesdetecting, via the sensor of the augmented reality device, that the userof the augmented reality device is facing a reflective surface.
 4. Thecomputer-implemented method of claim 1, wherein supplementing thecontent presented in the view area of the augmented reality devicecomprises supplementing the content with guidance for at least one ofimproving and enhancing the action being performed by the user.
 5. Thecomputer-implemented method of claim 4, wherein supplementing thecontent presented in the view area of the augmented reality devicecomprises supplementing the content with at least one of textualcontent, audio content, and video content containing the guidance forthe at least one of improving and enhancing the action being performedby the user.
 6. The computer-implemented method of claim 1, furthercomprising determining, based on at least one of information obtainedfrom the sensor of the augmented reality device, a data store associatedwith the augmented reality device, and information derived from at leastone social media platform, one or more facts regarding the action beingperformed by the user.
 7. The computer-implemented method of claim 6,wherein supplementing the content presented in the view area of theaugmented reality device comprises supplementing the content with theone or more facts regarding the action being performed by the user. 8.The computer-implemented method of claim 7, wherein supplementing thecontent presented in the view area of the augmented reality devicecomprises supplementing the content with at least one of textualcontent, audio content, and video content containing the one or morefacts regarding the action being performed by the user.
 9. A systemconfigured for providing suggestions for capturing visual images oflandmarks via augmented reality devices, the system comprising: one ormore hardware processors configured by machine-readable instructions to:detect, via a sensor of an augmented reality device having an outwardlyfacing camera, that a user of the augmented reality device is present ata landmark; receive an indication that a visual image is to be capturedvia the outwardly facing camera of the augmented reality device; based,at least in part, on detecting that the user of the augmented realitydevice is present at a landmark and receiving the indication that thevisual image is to be captured, determining at least one best practicefor capturing the visual image such that the visual image includes thelandmark; and causing the at least one best practice for capturing thevisual image such that the visual image includes the landmark to becommunicated to the user.
 10. The system of claim 9, wherein determiningthe at least one best practice for capturing the visual image such thatthe visual image includes the landmark comprises determining, based uponan image history associated with the user of the augmented realitydevice, the at least one best practice for capturing the visual imagesuch that the visual image includes the landmark.
 11. The system ofclaim 9, wherein determining the at least one best practice forcapturing the visual image such that the visual image includes thelandmark comprises determining, based upon images of the landmarkcaptured by a plurality of augmented reality device users, the at leastone best practice for capturing the visual image such that the visualimage includes the landmark.
 12. The system of claim 9, whereindetermining the at least one best practice for capturing the visualimage such that the visual image includes the landmark comprisesdetermining, based upon information associated with a plurality ofvisual images including the landmark captured by a plurality ofaugmented reality device users, the at least one best practice forcapturing the visual image such that the visual image includes thelandmark.
 13. The system of claim 9, wherein the at least one bestpractice for capturing the visual image such that the visual imageincludes the landmark includes information regarding positioning of thelandmark in relation to the visual image as a whole.
 14. The system ofclaim 9, wherein the at least one best practice for capturing the visualimage such that the visual image includes the landmark includesinformation regarding an angle from which capturing of the visual imageis suggested.
 15. A non-transient computer-readable storage mediumhaving instructions embodied thereon, the instructions being executableby one or more processors to perform a method for providing feedbackregarding augmented reality device content, the method comprising:detecting, via a sensor of a wearable, head-mounted augmented realitydevice having an outwardly facing camera, that a user of the wearable,head-mounted augmented reality device appears within content presentedin a view area of the wearable, head-mounted augmented reality device;responsive to detecting that the user of the wearable, head-mountedaugmented reality device appears within the content presented in theview area of the wearable, head-mounted augmented reality device,determining an action being performed by the user; and responsive todetermining the action being performed by the user, supplementing thecontent presented in the view area of the wearable, head-mountedaugmented reality device.
 16. The non-transient computer-readablestorage medium of claim 15, wherein detecting, via the sensor of thewearable, head-mounted augmented reality device, that the user of thewearable, head-mounted augmented reality device appears within thecontent presented in the view area of the wearable, head-mountedaugmented reality device comprises detecting, via the sensor of thewearable, head-mounted augmented reality device, that the user of thewearable, head-mounted augmented reality device is facing a reflectivesurface.
 17. The non-transient computer-readable storage medium of claim15, wherein supplementing the content presented in the view area of thewearable, head-mounted augmented reality device comprises supplementingthe content presented in the view area of the wearable, head-mountedaugmented reality device with guidance for at least one of improving andenhancing the action being performed by the user.
 18. The non-transientcomputer-readable storage medium of claim 15, wherein supplementing thecontent presented in the view area of the wearable, head-mountedaugmented reality device comprises supplementing the content presentedin the view area of the wearable, head-mounted augmented reality devicewith at least one of textual content, audio content, and video contentcontaining the guidance for the at least one of improving and enhancingthe action being performed by the user.
 19. The non-transientcomputer-readable storage medium of claim 15, wherein the method furthercomprises determining, based on at least one of information obtainedfrom the sensor of the wearable, head-mounted augmented reality device,a data store associated with the wearable, head-mounted augmentedreality device, and information derived from at least one social mediaplatform, one or more facts regarding the action being performed by theuser.
 20. The non-transient computer-readable storage medium of claim15, supplementing the content presented in the view area of thewearable, head-mounted augmented reality device comprises supplementingthe content presented in the view area of the wearable, head-mountedaugmented reality device with the one or more facts regarding the actionbeing performed by the user.